package de.kundepro.example.vaadin;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import de.kundepro.example.vaadin.entities.FirmaRechtsformen;
import java.lang.String;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Query;

public class DataAccessObject {

    private javax.persistence.EntityManager em;

    public DataAccessObject() {

        em = javax.persistence.Persistence.createEntityManagerFactory("KundePro").createEntityManager();


        Firma firma = new Firma();
        Firma firma2 = new Firma();
        Firma firma3 = new Firma();
        Firma firma4 = new Firma();
        Firma firma5 = new Firma();
        Firma firma6 = new Firma();
        Firma firma7 = new Firma();

        Person person1 = new Person();
        Person person2 = new Person();
        Person person3 = new Person();
        Person person4 = new Person();

        FirmaEinheiten firmaEinheit1 = new FirmaEinheiten();
        FirmaRechtsformen rf = new FirmaRechtsformen();

        ArrayList<Firma> firm = new ArrayList<Firma>();
        ArrayList<Person> pers = new ArrayList<Person>();
        ArrayList<FirmaEinheiten> fiEi= new ArrayList<FirmaEinheiten>();
        ArrayList<FirmaRechtsformen> fiRecht= new ArrayList<FirmaRechtsformen>();



//        rf.setFiRechtsform("GmbH & Co. KG");
//        rf.setFiRechtsformLang("blablbablalblblalblalb");
//        fiRecht.add(rf);
//
        firma.setFiName("DMT");
//        firma.setFiRechtsformFID();
//        firma.setFiRechtsformFID(fiRecht.get(0));
        firm.add(firma);

        firma2.setFiName("Thyssen Krupp Steel");
        firm.add(firma2);

        firma3.setFiName("Thyssen Krupp Steel");
        firm.add(firma3);

        firma4.setFiName("Berufsfeuerwehr Dortmund");
        firm.add(firma4);


        firma5.setFiName("Hochtief");
        firm.add(firma5);


        firma6.setFiName("Opel Werk 1");
        firm.add(firma6);

        firmaEinheit1.setFiAdresseZeile1("Tremoniastr.13");
        firmaEinheit1.setFiAnschriftIstRechnungAnschrift(true);
        firmaEinheit1.setFiEiFirmaFID(1);
        firmaEinheit1.setFiEinheitBezeichnungen("Zentrum für Brand- und Explosionsschutz");
        firmaEinheit1.setFiEmail("test@dmt.de");
        firmaEinheit1.setFiFax("0231 5333 299");
        firmaEinheit1.setFiTelefon("0231 5333 357");
        firmaEinheit1.setFiRechnungAdressOrt("Essen");
        firmaEinheit1.setFiRechnungAdressPLZ("56789");
        firmaEinheit1.setFiRechnungAdresseZeile1("Am Technologiepark 1");


        firmaEinheit1.setFiOrt("Dortmund");
        firmaEinheit1.setFiPLZ("44137");
        fiEi.add(firmaEinheit1);

        person1.setPeNachname("Lustig");
        person1.setPeVorname("Peter");
        person1.setPeAnschriftZeile1("Löwenzahnweg 1");
        person1.setPePLZ("99292");
        person1.setPeOrt("Löwenstadt");

        person2.setPeNachname("Schnese");
        person2.setPeVorname("Andreas");
        person2.setPeAnschriftZeile1("Alter Werner Hellweg 167");
        person2.setPePLZ("44803");
        person2.setPeOrt("Bochum");

        person3.setPeNachname("Markgräfe");
        person3.setPeVorname("Mark"); 
        person3.setPeAnschriftZeile1("Kohlenstrasse 88");
        person3.setPePLZ("45289");
        person3.setPeOrt("Essen");

        person4.setPeNachname("Gödecke");
        person4.setPeVorname("Oliver");
        person4.setPeAnschriftZeile1("Hinterhof 13");
        person4.setPePLZ("66666");
        person4.setPeOrt("Dortmund");


        try {
            em.getTransaction().begin();
            em.persist(firma);
            em.persist(firma2);
            em.persist(firma3);
            em.persist(firma4);
            em.persist(firma5);
            em.persist(firma6);
            em.persist(person1);
            em.persist(person2);
            em.persist(person3);
            em.persist(person4);
            em.persist(firmaEinheit1);
//            em.persist(rf);

            em.getTransaction().commit();
        } catch (Throwable e) {
        }
    

    }
    public ArrayList<Firma> getCompany(String value) {

        ArrayList<Firma> comp = new ArrayList();
        List<Firma> company = (List<Firma>) em.createQuery("select u from Firma u where u.fiID = '" + value+"'").getResultList();

        if(!(company.isEmpty())){
            for(Firma found : company) {
                comp.add(found);
            }
        }
        return comp;
    }



    public ArrayList<FirmaRechtsformen> getRechtsform (String val) {

        Query q1 = em.createNamedQuery("findAllRechtsformen");
        q1.setParameter("fiID", (String) val);
        ArrayList<FirmaRechtsformen>  rechtsf = new ArrayList();
        List<FirmaRechtsformen> rf2 = (List<FirmaRechtsformen>) em.createNamedQuery("findAllRechtsformen").getResultList();

          if(!(rf2.isEmpty())){
            for(FirmaRechtsformen found : rf2) {
                rechtsf.add(found);
            }
        }
        return rechtsf;
    }


    public ArrayList<FirmaEinheiten> getAllCompanyDetails(String value) {

        ArrayList<FirmaEinheiten> comp = new ArrayList();
        List<FirmaEinheiten> company = (List<FirmaEinheiten>) em.createQuery("select u from FirmaEinheiten u where u.fiEiFirmaFID = '" + value+"'").getResultList();

        if(!(company.isEmpty())){
            for(FirmaEinheiten found : company) {
                comp.add(found);
            }
        }
        return comp;
    }

        public void setCompanyDetails(FirmaEinheiten fiEi) {

        FirmaEinheiten comp = fiEi;
        String update = ("UPDATE FirmaEinheiten SET fiPLZ = '44444' WHERE fiEiID = '11';");
//        String update = ("UPDATE FirmaEinheiten SET fiPLZ = '"+ comp.getFiPLZ()+"' WHERE fiEiID = '"+comp.getFiEiID()+"';");
        em.createQuery(update);

    }


    public ArrayList<Firma> getAllFirmen() {

        ArrayList<Firma> fir = new ArrayList();


        List<Firma> alleFirmen = (List<Firma>) em.createQuery("select u from Firma u").getResultList();

        if (!(alleFirmen.isEmpty())) {
            for (Firma found : alleFirmen) {
                fir.add(found);
            }
        }

        return fir;
    }

        public ArrayList<Person> getAllPersonen() {

        ArrayList<Person> per = new ArrayList();


        List<Person> allePersonen = (List<Person>) em.createQuery("select u from Person u").getResultList();

        if (!(allePersonen.isEmpty())) {
            for (Person found : allePersonen) {
                per.add(found);
            }
        }

        return per;
    }

}
